package com.enjoyor.soa.traffic.api.service.dubbo.psms;

import java.util.Date;

import com.enjoyor.soa.traffic.util.pojo.Page;
import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

/**
 * 
 * @ClassName: DubboStatisticsService
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author yrch 961774545@qq.com
 * @date 2017年12月7日 上午9:20:25
 *
 */
@SuppressWarnings("rawtypes")
public interface DubboStatisticsService {

	/**
	 * 部门警力统计
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 * @param beginDate
	 * @param endDate
	 * @param status
	 * @return
	 */
	public ResultPojo listPoliceNumStatisticsDept(String systemKey, String token, String deptId, Date beginDate,
			Date endDate, String status);

	/**
	 * 分页部门警力统计
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 * @param postType
	 * @param postName
	 * @param beginDate
	 * @param endDate
	 * @param status
	 * @return
	 */
	public ResultPojo listPoliceNumStatisticsPost(String systemKey, String token, String deptId, String postType,
			String postName, Date beginDate, Date endDate, String status);

	/**
	 * 岗位警力统计
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 * @param beginDate
	 * @param endDate
	 * @param status
	 * @param page
	 * @return
	 */
	public ResultPojo pagePoliceNumStatisticsDept(String systemKey, String token, String deptId, Date beginDate,
			Date endDate, String status, Page page);

	/**
	 * 分页岗位警力统计
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 * @param postType
	 * @param postName
	 * @param beginDate
	 * @param endDate
	 * @param status
	 * @param page
	 * @return
	 */
	public ResultPojo pagePoliceNumStatisticsPost(String systemKey, String token, String deptId, String postType,
			String postName, Date beginDate, Date endDate, String status, Page page);

	/**
	 * 警员考勤脱岗时长统计
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 * @param policeComp
	 * @param policeName
	 * @param effective
	 * @param beginDate
	 * @param endDate
	 * @param page
	 * @return
	 */
	public ResultPojo pagePoliceAbsentDurationStatistics(String systemKey, String token, String deptId,
			String policeComp, String policeName, String effective, Date beginDate, Date endDate, Page page);

	/**
	 * 警员考勤脱岗详情
	 * 
	 * @param systemKey
	 * @param token
	 * @param policeId
	 * @param effective
	 * @param beginDate
	 * @param endDate
	 * @param page
	 * @return
	 */
	public ResultPojo pagePoliceAbsentDurationDetailStatistics(String systemKey, String token, String policeId,
			String effective, Date beginDate, Date endDate, Page page);

	/**
	 * 岗位考勤脱岗时长统计
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 *            部门编号:可以传多个值：用逗号分隔开 例：50000000,60000000
	 * @param postType
	 * @param postName
	 * @param effective
	 * @param beginDate
	 * @param endDate
	 * @param page
	 * @return
	 */
	public ResultPojo pagePostAbsentDurationStatistics(String systemKey, String token, String deptId, String postType,
			String postName, String effective, Date beginDate, Date endDate, Page page);

	/**
	 * 岗位考勤脱岗详情
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 *            部门编号:可以传多个值：用逗号分隔开 例：50000000,60000000
	 * @param effective
	 * @param beginDate
	 * @param endDate
	 * @param page
	 * @return
	 */
	public ResultPojo pagePostAbsentDurationDetailStatistics(String systemKey, String token, String postId,
			String effective, Date beginDate, Date endDate, Page page);

	/**
	 * 考勤统计 警员考勤部门维度
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 *            部门编号:可以传多个值：用逗号分隔开 例：50000000,60000000
	 * @param postType
	 * @param beginDate
	 *            开始时间 精确到秒 2017-12-28 00:00:00
	 * @param endDate
	 *            结束时间 精确到秒 2017-12-28 23:59:59
	 * @param page
	 * @return
	 */
	public ResultPojo pageAttendOnPostPercentStatisticsForPolice(String systemKey, String token, String deptId,
			String postType, Date beginDate, Date endDate, Page page);

	/**
	 * 考勤统计 岗位考勤 部门维度
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 *            部门编号:可以传多个值：用逗号分隔开 例：50000000,60000000
	 * @param postType
	 * @param beginDate
	 *            开始时间 精确到秒 2017-12-28 00:00:00
	 * @param endDate
	 *            结束时间 精确到秒 2017-12-28 23:59:59
	 * @param page
	 * @return
	 */
	public ResultPojo pageAttendOnPostPercentStatisticsForPost(String systemKey, String token, String deptId,
			String postType, Date beginDate, Date endDate, Page page);

	/**
	 * 排班时长，执勤时长 警员维度
	 * 
	 * @param deptId
	 *            部门编号:可以传多个值：用逗号分隔开 例：50000000,60000000
	 * @param policeComp
	 *            警员类型
	 * @param policeName
	 *            警员名称
	 * @param beginDate
	 *            开始时间 精确到秒 2017-12-28 00:00:00
	 * @param endDate
	 *            结束时间 精确到秒 2017-12-28 23:59:59
	 * @param page
	 * @return
	 */
	public ResultPojo pageAttendDurationStatisticsForPolice(String systemKey, String token, String deptId,
			String policeComp, String policeName, Date beginDate, Date endDate, Page page);

	/**
	 * 排班时长，执勤时长 岗位
	 * 
	 * @param deptId
	 *            部门编号:可以传多个值：用逗号分隔开 例：50000000,60000000
	 * @param postType
	 *            岗位类型
	 * @param postName
	 *            岗位名称
	 * @param beginDate
	 *            开始时间 精确到秒 2017-12-28 00:00:00
	 * @param endDate
	 *            结束时间 精确到秒 2017-12-28 23:59:59
	 * @param page
	 * @return
	 */
	public ResultPojo pageAttendDurationStatisticsForPost(String systemKey, String token, String deptId,
			String postType, String postName, Date beginDate, Date endDate, Page page);

	/**
	 * 排班时长，执勤时长 部门维度
	 * 
	 * @param deptId
	 *            部门编号：只需要传一个值
	 * @param beginDate
	 *            开始时间 精确到秒 2017-12-28 00:00:00
	 * @param endDate
	 *            结束时间 精确到秒 2017-12-28 23:59:59
	 * @param page
	 * @return
	 */
	public ResultPojo pageAttendDurationStatisticsForDept(String systemKey, String token, String deptId, Date beginDate,
			Date endDate, Page page);

	/**
	 * 设备在线率
	 * 
	 * @param systemKey
	 * @param token
	 * @param deptId
	 * @param deiveCode
	 * @param beginDate
	 * @param endDate
	 * @param para1
	 * @param page
	 * @return
	 */
	public ResultPojo pageDeviceOnLinePercent(String systemKey, String token, String deptId, String deiveCode,
			Date beginDate, Date endDate, String para1, Page page);

}
